package com.westcom.healthmate.bean;

import com.alibaba.fastjson.annotation.JSONField;
import java.util.List;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class MiraSleepDailyReport
{
    @JSONField(name="user_id")
    private long userId;

    @JSONField(name="mac")
    private String mac;

    @JSONField(name="sensor_id")
    private int sensorId;

    @JSONField(name="time_updated")
    private long timeUpdated;

    @JSONField(name="create_at")
    private String createAt;

    @JSONField(name="report_date")
    private String reportDate;

    @JSONField(name="score")
    private long score;

    @JSONField(name="sleep_time_hour")
    private long sleepTimeHour;

    @JSONField(name="sleep_time_minute")
    private long sleepTimeMinute;

    @JSONField(name="on_bed_duration_second")
    private long onBedDurationSecond;

    @JSONField(name="snore_duration_second")
    private long snoreDurationSecond;

    @JSONField(name="smoniloquy_duration_second")
    private long smoniloquyDurationSeconde;

    @JSONField(name="body_revolve_times")
    private long bodyRevolveTimes;

    @JSONField(name="body_move_times")
    private long bodyMoveTimes;

    @JSONField(name="indoor_temperature")
    private long indoorTemperature;

    @JSONField(name="indoor_humidity")
    private long indoorHumidity;

    @JSONField(name="noise_avg")
    private long noiseAvg;

    @JSONField(name="ray_avg")
    private long rayAvg;

    @JSONField(name="sub_report_num")
    private long subReportNum;

    @JSONField(name="deep")
    private MiraReportDeep deep;

    @JSONField(name="comment")
    private MiraReportComment comment;

    @JSONField(name="light")
    private MiraReportLight light;

    @JSONField(name="rem")
    private MiraReportRem rem;

    @JSONField(name="awake")
    private MiraReportAwake awake;

    @JSONField(name="breath_stop")
    private MiraReportBreathStop breathStop;

    @JSONField(name="heart_beat_stop")
    private long heartBeatStop;

    @JSONField(name="sub_report")
    private List<MiraReportSubReport> subReport;

    @JSONField(name="asleep_time")
    private String asleepTime;

    @JSONField(name="wake_time")
    private String wakeTime;

    @JSONField(name="using_time")
    private long usingTime;

    @Getter
    @Setter
    public static class MiraReportDeep
    {
        @JSONField(name="percentage")
        private long percentage;

        @JSONField(name="value")
        private long value;

    }

    @Getter
    @Setter
    public static class MiraReportComment
    {
        @JSONField(name="deep")
        private long deep;

        @JSONField(name="rem")
        private long rem;

        @JSONField(name="asleep")
        private long asleep;

        @JSONField(name="sleep_len")
        private long sleepLen;

    }

    @Getter
    @Setter
    public static class MiraReportLight
    {
        @JSONField(name="percentage")
        private long percentage;

        @JSONField(name="value")
        private long value;

    }

    @Getter
    @Setter
    public static class MiraReportRem
    {
        @JSONField(name="percentage")
        private long percentage;

        @JSONField(name="value")
        private long value;

    }

    @Getter
    @Setter
    public static class MiraReportAwake
    {
        @JSONField(name="percentage")
        private long percentage;

        @JSONField(name="value")
        private long value;
    }

    @Getter
    @Setter
    public static class MiraReportSubReport
    {
        @JSONField(name="score")
        private long score;

        @JSONField(name="sleep_start")
        private String sleepStart;

        @JSONField(name="time_start")
        private long timeStart;

        @JSONField(name="sleep_end")
        private String sleepEnd;

        @JSONField(name="sleep_time_hour")
        private long sleepTimeHour;

        @JSONField(name="sleep_time_minute")
        private long sleepTimeMinute;

        @JSONField(name="deep")
        private MiraReportDeep deep;

        @JSONField(name="light")
        private MiraReportLight light;

        @JSONField(name="rem")
        private MiraReportRem rem;

        @JSONField(name="awake")
        private MiraReportAwake awake;

        @JSONField(name="breath_avg")
        private long breathAvg;

//        @JSONField(name="breath_stop")
//        private long breathStopLong;

        @JSONField(name="heart_beat_stop")
        private long heartBeatStop;

        @JSONField(name="heart_beat_avg")
        private long heartBeatAvg;

        @JSONField(name="move_total")
        private long moveTotal;

        @JSONField(name="sleep_data")
        private List<MiraReportSleepData> sleepData;

        @JSONField(name="sleep_data_2")
        private List<MiraReportSleepData> sleepData2;

        @JSONField(name="breath")
        private MiraReportBreath breath;

        @JSONField(name="heart_beat")
        private MiraReportHeartBeat heartBeat;

        @JSONField(name="move")
        private MiraReportMove move;

        @JSONField(name="temperature")
        private MiraReportTemperature temperature;

        @JSONField(name="indoor_temperature")
        private MiraReportIndoorTemperature indoorTemperature;

        @JSONField(name="indoor_humidity")
        private MiraReportIndoorHumidity indoorHumidity;

        @JSONField(name="noise")
        private MiraReportNoise noise;

        @JSONField(name="ray")
        private MiraReportRay ray;

        @JSONField(name="snore")
        private List<MiraReportSnore> snore;

        @JSONField(name="snore_count")
        private List<MiraReportSnoreCount> snoreCount;

        @JSONField(name="body_move")
        private List<MiraReportBodyMove> bodyMove;

        @JSONField(name="body_revolve")
        private List<MiraReportBodyRevolve> bodyRevolve;

//        @JSONField(name="breath_stop")
//        private List<MiraReportSubBreathStop> breathStop;
    }

    @Getter
    @Setter
    public static class MiraReportSleepData
    {
        @JSONField(name="start")
        private long start;

        @JSONField(name="end")
        private long end;

        @JSONField(name="status")
        private long status;
    }

    @Getter
    @Setter
    public static class MiraReportBreath
    {
        @JSONField(name="num")
        private List<Double> num;

        @JSONField(name="time")
        private List<Long> time;
    }

    @Getter
    @Setter
    public static class MiraReportHeartBeat
    {
        @JSONField(name="num")
        private List<Double> num;

        @JSONField(name="time")
        private List<Long> time;
    }

    @Getter
    @Setter
    public static class MiraReportMove
    {
        @JSONField(name="num")
        private List<Double> num;

        @JSONField(name="time")
        private List<Long> time;

    }

    @Getter
    @Setter
    public static class MiraReportTemperature
    {
        @JSONField(name="num")
        private List<Long> num;

        @JSONField(name="time")
        private List<Long> time;
    }

    @Getter
    @Setter
    public static class MiraReportIndoorTemperature
    {
        @JSONField(name="num")
        private List<Long> num;

        @JSONField(name="time")
        private List<Long> time;

    }

    @Getter
    @Setter
    public static class MiraReportIndoorHumidity
    {
        @JSONField(name="num")
        private List<Long> num;

        @JSONField(name="time")
        private List<Long> time;
    }

    @Getter
    @Setter
    public static class MiraReportNoise
    {
        @JSONField(name="num")
        private List<Long> num;

        @JSONField(name="time")
        private List<Long> time;
    }

    @Getter
    @Setter
    public static class MiraReportRay
    {
        @JSONField(name="num")
        private List<Long> num;

        @JSONField(name="time")
        private List<Long> time;
    }

    @Getter
    @Setter
    public static class MiraReportBodyMove
    {
        @JSONField(name="value")
        private long value;

        @JSONField(name="time")
        private long time;
    }

    @Getter
    @Setter
    public static class MiraReportSnore
    {
        @JSONField(name="time")
        private long time;

        @JSONField(name="value")
        private long value;
    }

    @Getter
    @Setter
    public static class MiraReportSnoreCount
    {
        @JSONField(name="time")
        private long time;

        @JSONField(name="value")
        private long value;
    }

    @Getter
    @Setter
    public static class MiraReportBreathStop
    {
        @JSONField(name="num")
        private long num;

        @JSONField(name="duration")
        private long duration;
    }

    @Getter
    @Setter
    public static class MiraReportSubBreathStop
    {
        @JSONField(name="value")
        private long value;

        @JSONField(name="time")
        private long time;
    }

    @Getter
    @Setter
    public static class MiraReportBodyRevolve
    {
        @JSONField(name="value")
        private long value;

        @JSONField(name="time")
        private long time;
    }
}
